出处:掘金
原作者:ErpanOmer
First Contentful Paint (FCP) 是 Web 性能优化中的关键指标之一,表示浏览器从用户输入 URL 到渲染页面首个内容的时间。一个良好的 FCP 体验不仅能提升用户对网站的第一印象,还能增强 SEO 表现和转化率
本文将从 FCP 的定义、测量方法到优化技巧展开探讨,并通过代码实例直观展示如何优化 FCP
FCP 表示页面内容首次渲染的时间,主要关注以下元素:
FCP 是用户感知性能的重要组成部分,直接影响用户对加载速度的主观体验。FCP 越快,用户越容易留下良好的第一印象
Lighthouse 是 Google 提供的一站式性能检测工具,可生成详细的 FCP 数据:
使用 PerformanceObserver API 捕获 FCP 时间:
const observer = new PerformanceObserver((list) => {
const entries = list.getEntriesByName('first-contentful-paint');
if (entries.length) {
console.log('FCP:', entries[0].startTime, 'ms');
}
});
observer.observe({ type: 'paint', buffered: true });
阻塞渲染的资源(如 CSS 和 JavaScript)会显著延迟 FCP。通过以下方式优化:
defer 或 async 属性加载脚本,<script src="non-critical.js" defer></script>CDN 可以减少资源的加载延迟,提高静态资源的传输速度。例如,通过 Cloudflare 配置静态资源缓存:
location /static/ {
expires 30d;
add_header Cache-Control "public";
}
loading="lazy" 属性延迟加载,<img src="large-image.jpg" alt="Example" loading="lazy">通过 HTTP/2 多路复用功能,可以并行加载多个资源,减少阻塞时间。在 Nginx 中启用 HTTP/2:
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
}
未正确加载的字体会阻塞文本渲染,导致 FCP 延迟。以下是优化字体加载的步骤:
<link rel="preload" href="font.woff2" as="font" type="font/woff2" crossorigin="anonymous">某内容网站首页加载时间较慢,FCP 为 2.8 秒,导致跳出率较高。通过以下优化策略,显著提升性能
优化前:
优化后:
优化 FCP 是提升用户体验的关键步骤。通过减少阻塞资源、优化图片加载、启用现代网络协议等手段,可以显著提升网站性能和用户满意度。希望本文的代码示例和案例能帮助您更好地理解和优化 FCP,让您的网站性能更上一层楼!